import java.io.File;
import java.io.IOException;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description: 利用文件读写操作，简单实现一些需求
 * 扫描指定目录，并找到名称中包含指定字符的所有普通文件（不包含目录），并且后续询问用户是否删除该文件
 * 需要用户输入一个目录，再输入一个要删除的文件名
 */
public class Demo12 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要扫描的路径：");
        String directory = scanner.nextLine();
        System.out.print("请输入要删除的文件名：");
        String name = scanner.nextLine();
        File rootDir = new File(directory);
        if(!rootDir.isDirectory()) {
            System.out.println("输入的扫描路径不正确");
            return;
        }

        //2. 遍历目录，把 指定目录 中的所有文件和子目录都遍历一遍，从而找到要删除的文件
        //  通过这个方法实现遍历并删除的操作
        scanDir(rootDir, name);

    }

    private static void scanDir(File rootDir, String name) {
        //先列出rootDir中有哪些内容
        File[] files = rootDir.listFiles();
        if(files == null) {
            System.out.println("目录中内容为空！");
            return;
        }
        //2. 遍历当前列出的内容，如果是普通文件，就检测文件名是否是要删除的文件
        //  如果是目录，就递归的进行遍历
        for(File f : files) {
            if(f.isDirectory()) {
                scanDir(f, name);
                continue;
            }
            if(f.getName().contains(name)) {
                delectFile(f);
            }
        }
    }

    private static void delectFile(File f) {
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.print(f.getCanonicalPath() + "确认要删除吗(T/F)：");
            String ret = scanner.next();
            if("T".equals(ret) || "t".equals(ret)) {
                System.out.println("删除成功！");
                f.delete();
            }else {
                System.out.println("放弃删除！");
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
